#include "globalarray.h"
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{   
    MPI_Init(&argc,&argv);
    int type = TYPE_DOUBLE;
    char name[8]="array1";
    int size[2] = {10,10};
    int index[2];
    int dim = 2;
    int self;
    int i,j;

    MPI_Comm_rank(MPI_COMM_WORLD, &self);
    uo_init(argc, argv);
    
    index[0] = 0;
    index[1] = 0;
    double value = 0;
    double value_get;

    if(self==1){
        uo_new_array(name,type, size, dim);

        uo_put_element(name, index, &value, type);

        for (i = 0; i <size[0]; i++)
          {
             for (j = 0; j <size[1]; j++)
              {
               index[0] = i;
               index[1] = j;
               value = i*j;  
               uo_put_element(name, index, &value, type); 
               }
            }
         
        // array 2
        uo_new_array(name2,type, size2, dim2);
        for (i = 0; i <size2[0]; i++)
          {
             for (j = 0; j <size2[1]; j++)
              {
               index2[0] = i;
               index2[1] = j;
               value2 = j;
               uo_put_element(name2, index2, &value2, type);
               }
            }

        for (i = 0; i <size[0]; i++)
          {
             for (j = 0; j <size2[1]; j++)
              {
               index[0] = i;
               index[1] = j;
               uo_get_element(name,index,&value_get, type);
               switch (type)
               {
                case TYPE_INT:
                    printf("SMALLTEST: %s[%d][%d]= %d   %s[%d][%d]= %d \n",
                            name,index[0],index[1],value_get1,
                            name2,index2[0],index2[1],value_get2); 
                    break;
                case TYPE_FLOAT:
                    printf("SMALLTEST: %s[%d][%d]= %f   %s[%d][%d]= %f \n",
                            name,index[0],index[1],value_get1,
                            name2,index2[0],index2[1],value_get2);
                    break;
                case TYPE_DOUBLE:
                    printf("SMALLTEST: %s[%d][%d]= %f   %s[%d][%d]= %f \n",
                            name,index[0],index[1],value_get1,
                            name2,index2[0],index2[1],value_get2);
                    break;

                }
               }
            }

  
        //uo_get_element(name,index,&value_get, type);
        //printf("get %s[%d]= %d\n",name,index[0],value_get);
 
    }
    printf("GOOD!\n"); 
          
    
    // Clean up MPI and free memory 
    uo_free_array(name);
    
    uo_finalize();
    //sleep(10);
        
	return 0;
}

